import java.util.Arrays;

/**
 * @author admin
 * 121. 买卖股票的最佳时机
 */
public class LeeCode121 {

    public int maxProfit(int[] prices) {
//  一：暴力解法：计算出所有差值，再找出最大的，缺点是双重for循环
//        int max = 0;
//        for (int i = 0;i<prices.length;i++){
//            for (int j = i + 1;j<prices.length;j++){
//                int profit = prices[j] - prices[i];
//                if(profit > max){
//                    max = profit;
//                }
//            }
//        }
//        return max;

//        二：一次遍历:当找到第一个最低点时，保存，然后遍历到下一个时，假如比当前最小值大，则计算当前最大收益，否则更新最小值。
        int max = 0;
//        最大收益
        int min = Integer.MAX_VALUE;
//        最低点

        for (int i = 0;i < prices.length; i++){
            if (prices[i] < min){
                min = prices[i];
            }else if (prices[i] - min > max){
                max = prices[i] - min;
            }
        }
        return max;
    }


    public static void main(String[] args) {

        LeeCode121 leeCode121 = new LeeCode121();
        int[] ints = {7, 1, 5, 3, 6, 4};
        int i = leeCode121.maxProfit(ints);
        System.out.println(i);
    }
}
